/**
 * @file datapanel.h
 * @author trevrasher
 * @brief 
 * @version 0.1
 * @date 2024-05-8
 * 
 * Класс позволяет добавлять, обновлять и удалять
 * записи о показателях механоидов.
 */

#ifndef DATAPANEL_H
#define DATAPANEL_H

#include <QWidget>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QMap>
#include <QLabel>
#include <QApplication>

/**
 * @brief Структура, представляющая запись о механоиде для легкого взаимойдествия.
 * 
 * Эта структура содержит информацию о механоиде, такую как его идентификатор, здоровье и количество боеприпасов.
 * Также содержит указатель на виджет, отображающий эту информацию.
 */

struct MechEntry {
    QString name; ///< Имя механоида.
    int health; ///< Здоровье механоида.
    int ammo; ///< Количество боеприпасов механоида.
    QWidget *widget; ///< Указатель на виджет, отображающий информацию о механоиде.
};

class DataPanel : public QWidget {
    Q_OBJECT

public:
    explicit DataPanel(QWidget *parent = nullptr);

    void addStatus(const QString &mechanoidName, int health, int ammo);
    void updateStatus(const QString &mechanoidName, int health, int ammo);
    void deleteStatus(const QString &mechanoidName);

private:
    QVBoxLayout *m_layout; ///< Вертикальный компоновщик для панели данных.
    QScrollArea *scrollArea; ///< Область с прокруткой для контента.
    QWidget *contentWidget; ///< Виджет записей.
    QMap<QString, MechEntry> m_entries; ///< Хранилище записей о механоидах.

    QWidget *createEntryWidget(const QString &mechanoidName, int health, int ammo);
};

#endif // DATAPANEL_H
